<template>
  <a-form @submit="handleSubmit" :form="form" class="form">
    <a-row class="form-row" :gutter="16">
      <a-col :lg="6" :md="12" :sm="24">
        <a-form-item label="仓库名">
          <a-input
            placeholder="请输入仓库名称"
            v-decorator="[
              'name',
              {
                rules: [
                  {
                    required: true,
                    message: '请输入仓库名称',
                    whitespace: true
                  }
                ]
              }
            ]"
          />
        </a-form-item>
      </a-col>
      <a-col :xl="{ span: 7, offset: 1 }" :lg="{ span: 8 }" :md="{ span: 12 }" :sm="24">
        <a-form-item label="仓库域名">
          <a-input
            addon-before="http://"
            addon-after=".com"
            placeholder="请输入"
            v-decorator="[
              'url',
              {
                rules: [
                  {
                    required: true,
                    message: '请输入仓库域名',
                    whitespace: true
                  },
                  { validator: validate }
                ]
              }
            ]"
          />
        </a-form-item>
      </a-col>
      <a-col :xl="{ span: 9, offset: 1 }" :lg="{ span: 10 }" :md="{ span: 24 }" :sm="24">
        <a-form-item label="仓库管理员">
          <a-select
            placeholder="请选择管理员"
            v-decorator="['owner', { rules: [{ required: true, message: '请选择管理员' }] }]"
          >
            <a-select-option value="王同学">
              王同学
            </a-select-option>
            <a-select-option value="李同学">
              李同学
            </a-select-option>
            <a-select-option value="黄同学">
              黄同学
            </a-select-option>
          </a-select>
        </a-form-item>
      </a-col>
    </a-row>
    <a-row class="form-row" :gutter="16">
      <a-col :lg="6" :md="12" :sm="24">
        <a-form-item label="审批人">
          <a-select
            placeholder="请选择审批员"
            v-decorator="['approver', { rules: [{ required: true, message: '请选择审批员' }] }]"
          >
            <a-select-option value="王晓丽">
              王晓丽
            </a-select-option>
            <a-select-option value="李军">
              李军
            </a-select-option>
          </a-select>
        </a-form-item>
      </a-col>
      <a-col :xl="{ span: 7, offset: 1 }" :lg="{ span: 8 }" :md="{ span: 12 }" :sm="24">
        <a-form-item label="生效日期">
          <a-range-picker
            style="width: 100%"
            v-decorator="['dateRange', { rules: [{ required: true, message: '请选择生效日期' }] }]"
          />
        </a-form-item>
      </a-col>
      <a-col :xl="{ span: 9, offset: 1 }" :lg="{ span: 10 }" :md="{ span: 24 }" :sm="24">
        <a-form-item label="仓库类型">
          <a-select
            placeholder="请选择仓库类型"
            v-decorator="['type', { rules: [{ required: true, message: '请选择仓库类型' }] }]"
          >
            <a-select-option value="公开">
              公开
            </a-select-option>
            <a-select-option value="私密">
              私密
            </a-select-option>
          </a-select>
        </a-form-item>
      </a-col>
    </a-row>
    <a-form-item v-if="showSubmit">
      <a-button html-type="submit">
        Submit
      </a-button>
    </a-form-item>
  </a-form>
</template>

<script lang="ts">
import { Component, Vue, Prop } from 'vue-property-decorator'

@Component({
  name: 'RepositoryForm',
  components: {}
})
export default class RepositoryForm extends Vue {
  // props
  @Prop({
    type: Boolean,
    default: false
  })
  private showSubmit!: boolean

  // data
  private form: any

  constructor() {
    super()
  }

  beforeCreate() {
    this.form = this.$form.createForm(this)
  }

  // methods
  handleSubmit(e: any) {
    e.preventDefault()
    this.form.validateFields((err: any, values: any) => {
      if (!err) {
        this.$notification['error']({
          message: 'Received values of form:',
          description: values
        })
      }
    })
  }
  validate(rule: any, value: any, callback: Function) {
    const regex = /^user-(.*)$/
    if (!regex.test(value)) {
      callback(new Error('需要以 user- 开头'))
    }
    callback()
  }
}
</script>

<style scoped></style>
